<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>03-计算属性</title>
</head>
<body>
  <div id="app">
    <h1>vue的例子</h1>
    <p>{{msg}}</p>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    Vue.config.productionTip = false; // 关闭生产提示
    const vm = new Vue({
      el: '#app',
      data: {
        msg: 'hello',
        todoList: [
          { id: 1, todoName: '游泳', done: false },
          { id: 2, todoName: '滑雪', done: true },
          { id: 3, todoName: '逛街', done: true }
        ]
      },
      computed: {
        // computed是一个对象，说明对象是可以写很多的属性与方法
        leftCount() {
          // 这个方法中一定要返回对应的结果 
          // return this.todoList.filter(item => {
          //   // return item.done===false
          //   return !item.done
          // })

          return this.todoList.filter(item => !item.done).length
        }
      }
    })
    /***
     * .计算属性：
     * 1. 计算属性中的数据是根据data中的数据计算而来的
     * 2. 计算属性中函数的名称不能和data中的属性重名
     * 3. 计算属性中的方法名也可以像data中的属性一样，在插值表达式直接使用
     * 4. 只要是data中的数据发生了变化，那么计算属性会重新运算
     * 5. 计算属性的优点会缓存计算后的数据
     * 
     **/ 
  </script>
</body>
</html>